package com.github.zzay.care.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * @author zzay
 * @className Employee
 * @description Entity class of "Employee"
 * @create 2022/07/06 09:02
 */
@Data
@NoArgsConstructor
@TableName("care_employee")
@Schema(name = "Employee", description = "工作人员实体")
public class Employee implements Serializable {

    private static final long serialVersionUID = -1924968496539613291L;

    /**
     * Identifier.
     */
    @TableId(type = IdType.AUTO)
    @Schema(name = "id", description = "唯一标识符")
    private Integer id;

    /**
     * Name.
     */
    @Schema(name = "name", description = "姓名")
    private String name;

    /**
     * ID card number.
     */
    @Schema(name = "idCard", description = "身份证号")
    private String idCard;

    /**
     * Sex (Male: 0 / Female: 1 / Unknown: 2).
     */
    @Schema(name = "sex", description = "性别（0：男，1：女，2：未知）")
    private String sex;

    /**
     * Phone number.
     */
    @Schema(name = "phone", description = "手机号")
    private String phone;

    /**
     * Birthday.
     */
    @Schema(name = "birthday", description = "生日")
    private Date birthday;

    /**
     * Hire date.
     */
    @Schema(name = "hireDate", description = "入职日期")
    private Date hireDate;

    /**
     * Resign date.
     */
    @Schema(name = "resignDate", description = "离职日期")
    private Date resignDate;

    /**
     * Address of profile photo.
     */
    @Schema(name = "profilePhoto", description = "头像图片路径")
    private String profilePhoto;

    /**
     * Directory address of images.
     */
    @Schema(name = "imageDir", description = "图像目录路径")
    private String imageDir;

    /**
     * Description.
     */
    @Schema(name = "description", description = "额外描述")
    private String description;

    /**
     * Record status (normal: 0 / abandoned: 1)。
     */
    @Schema(name = "status", description = "记录状态（0：正常 1：停用）")
    private String status;

    /**
     * Creator.
     */
    @Hidden
    @Schema(name = "createBy", description = "创建人")
    private Long createBy;

    /**
     * Created time.
     */
    @Hidden
    @Schema(name = "createTime", description = "创建时间")
    private Date createTime;

    /**
     * Updater.
     */
    @Hidden
    @Schema(name = "updateBy", description = "更新人")
    private Long updateBy;

    /**
     * Updated time.
     */
    @Hidden
    @Schema(name = "updateTime", description = "更新时间")
    private Date updateTime;

    /**
     * Delete flag (not deleted: 0 / deleted: 1).
     */
    @Hidden
    @Schema(name = "delFlag", description = "删除标志（0代表未删除，1代表已删除）")
    private Integer delFlag;

    public Employee(String name, String idCard, String sex, String phone, Date birthday, Date hireDate) {
        this.name = name;
        this.idCard = idCard;
        this.sex = sex;
        this.phone = phone;
        this.birthday = birthday;
        this.hireDate = hireDate;
    }
}
